package com.xxl.util;

import com.xxl.dao.Data;
import com.xxl.pojo.Employ;

import java.util.ArrayList;
import java.util.List;

/**
 * 页面总数量，每页13条
 * @author xxl
 * @date 2023/3/8
 */
public class PageUtil {
    /**
     *  总数量
     */
    public static int total = Data.employList.size();
    /**
     * 总共多少页一页13条数据 59%13 = 4...7
     */
    public static int pageNumber = total%13 == 0 ? total/13:total/13+(total%13 > 1 ? 1:total%13) ;
    /**
     * 当前数量 初始为第一页，以这个为索引值
     */
    public static  int  page = 1;
    /**
     * 上一页
     */
    public static int up() {
        if (page ==  1) {
            return page = pageNumber;
        }
        return page -= 1;
    }
    /**
     * 下一页
     */
    public static int next() {
        if (page >= pageNumber) {
            return page = 1;
        }
        return page += 1;
    }
    /**
     * 返回数据
     */
    public static List<Employ>  employList() {
        //跟新数据
        renewTotal();
        //总数居
        List<Employ> employList = Data.employList;
        int count = PageUtil.page * 13;
        if (count >= PageUtil.total) {
            //最后一页数据
            count = PageUtil.total;
        }
        System.out.println("当前页数据="+count+"，总数据="
                +PageUtil.total+"，总页数量="
                +PageUtil.pageNumber
                +",当前页="+PageUtil.page);
        //分页显示数据,思路是把要显示的数据变成一个集合传递出去,根据但当前页显示数据
        List<Employ> ls = new ArrayList<>();

        if (PageUtil.page > 1) {
            //起始坐标  结束坐标
            for (int i = (PageUtil.page - 1)*13; i < count; i++) {
                ls.add(employList.get(i));
            }
            return ls;
        }
        for (int i = 0; i < count; i++) {
            ls.add(employList.get(i));
        }
        return ls;
    }
    /**
     *  由于是静态字段只会赋值一次，所以这个方法就是更新所有字段的
     */
    private static void renewTotal() {
        total = Data.employList.size();
        pageNumber = total%13 == 0 ? total/13:total/13+(total%13 > 1 ? 1:total%13) ;
    }
}
